load("@prysm//tools/go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_test")

# gazelle:exclude testdata

go_library(
    name = "go_default_library",
    srcs = [
        "log.go",
        "skip_slot_cache.go",
        "state.go",
        "trailing_slot_state_cache.go",
        "transition.go",
    ],
    importpath = "github.com/prysmaticlabs/prysm/beacon-chain/core/state",
    visibility = [
        "//beacon-chain:__subpackages__",
        "//endtoend:__pkg__",
        "//fuzz:__pkg__",
        "//shared/interop:__pkg__",
        "//shared/testutil:__pkg__",
        "//tools/benchmark-files-gen:__pkg__",
        "//tools/genesis-state-gen:__pkg__",
        "//tools/pcli:__pkg__",
    ],
    deps = [
        "//beacon-chain/cache:go_default_library",
        "//beacon-chain/core/blocks:go_default_library",
        "//beacon-chain/core/epoch:go_default_library",
        "//beacon-chain/core/epoch/precompute:go_default_library",
        "//beacon-chain/core/helpers:go_default_library",
        "//beacon-chain/core/state/interop:go_default_library",
        "//beacon-chain/state/interface:go_default_library",
        "//beacon-chain/state/stateV0:go_default_library",
        "//proto/beacon/p2p/v1:go_default_library",
        "//shared/bls:go_default_library",
        "//shared/bytesutil:go_default_library",
        "//shared/featureconfig:go_default_library",
        "//shared/hashutil:go_default_library",
        "//shared/mathutil:go_default_library",
        "//shared/params:go_default_library",
        "//shared/traceutil:go_default_library",
        "//shared/trieutil:go_default_library",
        "@com_github_pkg_errors//:go_default_library",
        "@com_github_prometheus_client_golang//prometheus:go_default_library",
        "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library",
        "@com_github_prysmaticlabs_eth2_types//:go_default_library",
        "@com_github_prysmaticlabs_ethereumapis//eth/v1alpha1:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
        "@io_opencensus_go//trace:go_default_library",
    ],
)

go_test(
    name = "go_default_test",
    size = "small",
    srcs = [
        "benchmarks_test.go",
        "skip_slot_cache_test.go",
        "state_fuzz_test.go",
        "state_test.go",
        "trailing_slot_state_cache_test.go",
        "transition_fuzz_test.go",
        "transition_test.go",
    ],
    data = [
        "//beacon-chain/core/state/regression_files:regression_data",
        "//shared/benchutil/benchmark_files:benchmark_data",
    ],
    embed = [":go_default_library"],
    shard_count = 3,
    deps = [
        "//beacon-chain/core/blocks:go_default_library",
        "//beacon-chain/core/helpers:go_default_library",
        "//beacon-chain/state/interface:go_default_library",
        "//beacon-chain/state/stateV0:go_default_library",
        "//proto/beacon/p2p/v1:go_default_library",
        "//shared/attestationutil:go_default_library",
        "//shared/benchutil:go_default_library",
        "//shared/bls:go_default_library",
        "//shared/bytesutil:go_default_library",
        "//shared/hashutil:go_default_library",
        "//shared/params:go_default_library",
        "//shared/testutil:go_default_library",
        "//shared/testutil/assert:go_default_library",
        "//shared/testutil/require:go_default_library",
        "//shared/trieutil:go_default_library",
        "@com_github_gogo_protobuf//proto:go_default_library",
        "@com_github_google_gofuzz//:go_default_library",
        "@com_github_prysmaticlabs_eth2_types//:go_default_library",
        "@com_github_prysmaticlabs_ethereumapis//eth/v1alpha1:go_default_library",
        "@com_github_prysmaticlabs_go_bitfield//:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
    ],
)

go_test(
    name = "go_benchmark_test",
    size = "large",
    srcs = ["benchmarks_test.go"],
    args = [
        "-test.bench=.",
        "-test.benchmem",
        "-test.v",
    ],
    local = True,
    tags = [
        "benchmark",
        "manual",
        "no-cache",
    ],
    deps = [
        "//beacon-chain/core/blocks:go_default_library",
        "//beacon-chain/core/helpers:go_default_library",
        "//beacon-chain/core/state:go_default_library",
        "//beacon-chain/state/stateV0:go_default_library",
        "//proto/beacon/p2p/v1:go_default_library",
        "//shared/benchutil:go_default_library",
        "//shared/params:go_default_library",
        "//shared/testutil/require:go_default_library",
        "@com_github_gogo_protobuf//proto:go_default_library",
    ],
)
